/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Clases;

import java.awt.Frame;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Collections;
import java.util.Vector;
import javax.swing.JOptionPane;

public class Seccion {

	String numeroSeccion;
	Profesor profesor;
	Vector<Estudiante> estudiantes;

	public Vector<Estudiante> getEstudiantes() {
		return estudiantes;
	}

	public void setEstudiantes(Vector<Estudiante> estudiantes) {
		this.estudiantes = estudiantes;
	}

	public Profesor getProfesor() {
		return profesor;
	}

	public void setProfesor(Profesor profesor) {
		this.profesor = profesor;
	}

	public Seccion(String numeroSeccion) {
		this.numeroSeccion = numeroSeccion;

	}

	public Seccion() {
		estudiantes = new Vector<Estudiante>();
	}

	public void AsignarProfesor(Profesor profesor) {
		this.profesor = profesor;
		System.out.println("Profesor asignado a la seccion:");
		System.out.println("===============================");
		System.out.println();
		System.out.println("Nombre:  " + profesor.getNombre());
		System.out.println("Apellido:" + profesor.getApellido());

	}

	public void InscribirEstrudiante(Estudiante estudiante) {
		boolean existe;
		existe = false;
		for (int i = 0; i < estudiantes.size(); i++) {
			if (estudiantes.elementAt(i).getCedula()
					.equals(estudiante.getCedula())) {
				existe = true;
				break;
			}
		}

		if (existe == false) {
			estudiantes.add(estudiante);
			JOptionPane.showMessageDialog(new Frame(),
					"Estudiante Inscrito Correctamente");
		} else {
			JOptionPane.showMessageDialog(new Frame(), "Estudiante ya Existe");
		}
	}

	public void RetirarEstudiante(String cedula) {

		boolean existe;
		existe = false;

		for (int i = 0; i < estudiantes.size(); i++) {
			if (estudiantes.elementAt(i).getCedula().equals(cedula)) {
				estudiantes.remove(i);
				JOptionPane.showMessageDialog(new Frame(),
						"Estudiante removido con exito");
				existe = true;
				break;
			}
		}

		if (existe == false) {
			JOptionPane.showMessageDialog(new Frame(),
					"El estudiante no pudo ser removido porque no existe");
		}

	}

	public int BuscarEstudiante(String cedula) {

		boolean existe;
		existe = false;
		int i;
		for (i = 0; i < estudiantes.size(); i++) {
			if (estudiantes.get(i).getCedula().equals(cedula)) {
				System.out.println("Resultado de la busqueda del estudiante");
				System.out.println("=======================================");
				System.out.println("nombre: " + estudiantes.get(i).getNombre()
						+ " " + estudiantes.get(i).getApellido());
				existe = true;
				break;
			}
		}

		if (existe == false) {
			JOptionPane.showMessageDialog(new Frame(), "Estudiante no existe");
			return -1;
		}

		return i;
	}

	public void AplicarEvaluaciones() {
		for (int i = 0; i < estudiantes.size(); i++) {
			estudiantes.get(i).PresentarEvaluacion();
		}

		profesor.EvaluarEstudiantes(estudiantes);
		System.out.println("Los estudiantes han presentado exitosamente");
	}

	public void ListarEstudiantesCedula() {
		int numeroi;
		int numeroj;
		for (int i = 0; i < estudiantes.size() - 1; ++i) {
			for (int j = i + 1; j < estudiantes.size(); ++j) {
				numeroi = Integer
						.parseInt(estudiantes.elementAt(i).getCedula());
				numeroj = Integer
						.parseInt(estudiantes.elementAt(j).getCedula());
				if (numeroi > numeroj) {
					Collections.swap(estudiantes, i, j);
				}
			}

		}
		FileWriter fichero = null;
		PrintWriter pw = null;
		try {
			fichero = new FileWriter("ListarCedula.txt");
			pw = new PrintWriter(fichero);
			pw.println("Listado de persona ordenados por cedula");
			pw.println("=======================================");
			pw.println("");
			pw.println("Nombre     Apellido       Cedula");

			for (int i = 0; i < estudiantes.size(); i++) {
				pw.println(estudiantes.elementAt(i).getNombre() + " "
						+ estudiantes.elementAt(i).getApellido() + " "
						+ estudiantes.elementAt(i).getCedula());
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				// Nuevamente aprovechamos el finally para
				// asegurarnos que se cierra el fichero.
				if (null != fichero) {
					fichero.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

	}

	public void ListarEstudiantesNota() {
		int numeroi;
		int numeroj;

		for (int i = 0; i < estudiantes.size() - 1; ++i) {
			for (int j = i + 1; j < estudiantes.size(); ++j) {
				numeroi = estudiantes.elementAt(i).getNotaFinal();
				numeroj = estudiantes.elementAt(j).getNotaFinal();
				if (numeroi > numeroj) {
					Collections.swap(estudiantes, i, j);
				}
			}
		}

		FileWriter fichero = null;
		PrintWriter pw = null;
		try {
			fichero = new FileWriter("ListarNotaFinal.txt");
			pw = new PrintWriter(fichero);
			pw.println("Listado de persona ordenados por Nota final");
			pw.println("=======================================");
			pw.println("");
			pw.println("Nombre     Apellido       Cedula   Nota Final");

			for (int i = 0; i < estudiantes.size(); i++) {
				pw.println(estudiantes.elementAt(i).getNombre() + " "
						+ estudiantes.elementAt(i).getApellido() + " "
						+ estudiantes.elementAt(i).getCedula() + " "
						+ estudiantes.elementAt(i).getNotaFinal());
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				// Nuevamente aprovechamos el finally para
				// asegurarnos que se cierra el fichero.
				if (null != fichero) {
					fichero.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

	}

	public void ListarAprobados() {

		FileWriter fichero = null;
		PrintWriter pw = null;
		try {
			fichero = new FileWriter("ListaAprobados.txt");
			pw = new PrintWriter(fichero);
			pw.println("Listado de persona Aprobados");
			pw.println("=======================================");
			pw.println("");
			pw.println("Nombre     Apellido       Cedula    Nota Final");

			for (int i = 0; i < estudiantes.size(); i++) {
				if (estudiantes.elementAt(i).getNotaFinal() >= 10) {
					pw.println(estudiantes.elementAt(i).getNombre() + " "
							+ estudiantes.elementAt(i).getApellido() + " "
							+ estudiantes.elementAt(i).getCedula() + " "
							+ estudiantes.elementAt(i).getNotaFinal());
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				// Nuevamente aprovechamos el finally para
				// asegurarnos que se cierra el fichero.
				if (null != fichero) {
					fichero.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

	}

	public void ListarReprobados() {

		FileWriter fichero = null;
		PrintWriter pw = null;
		try {
			fichero = new FileWriter("ListaReprobados.txt");
			pw = new PrintWriter(fichero);
			pw.println("Listado de persona Reprobados");
			pw.println("=======================================");
			pw.println("");
			pw.println("Nombre     Apellido       Cedula    Nota Final");

			for (int i = 0; i < estudiantes.size(); i++) {
				if (estudiantes.elementAt(i).getNotaFinal() < 10) {
					pw.println(estudiantes.elementAt(i).getNombre() + " "
							+ estudiantes.elementAt(i).getApellido() + " "
							+ estudiantes.elementAt(i).getCedula() + " "
							+ estudiantes.elementAt(i).getNotaFinal());
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				// Nuevamente aprovechamos el finally para
				// asegurarnos que se cierra el fichero.
				if (null != fichero) {
					fichero.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

	}

	public String getNumeroSeccion() {
		return numeroSeccion;
	}

	public void setNumeroSeccion(String numeroSeccion) {
		this.numeroSeccion = numeroSeccion;
	}

	public float ListaPromedio() {

		int acumulador;
		acumulador = 0;
		FileWriter fichero = null;
		PrintWriter pw = null;
		try {
			fichero = new FileWriter("Promedio.txt");
			pw = new PrintWriter(fichero);
			pw.println("Promedio de notas");
			pw.println("=======================================");
			pw.println("");
			acumulador = 0;
			for (int i = 0; i < estudiantes.size(); i++) {
				acumulador += estudiantes.elementAt(i).getNotaFinal();
			}
			acumulador = acumulador / estudiantes.size();
			pw.println(acumulador);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				// Nuevamente aprovechamos el finally para
				// asegurarnos que se cierra el fichero.
				if (null != fichero) {
					fichero.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

		return acumulador;

	}
} // llave de fin